#include "compile_run.hpp"
#include "../comm/httplib.h"
using namespace compile_and_run;
using namespace httplib;

void Usage(std::string proc)
{
std::cerr << "Usage: " << "\n\t" << proc << " port" << std::endl;
}

int main(int argc,char *argv[])
{
    if(argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }
    Server svr;
    // svr.Get("/hello",[](const Request &req, Response &resp){
    //     resp.set_content("hello你好 httplifdfadsfdarwsdfdasfb", "content-type: text/plain; charset=utf-8");
    // });
    svr.Post("/compile_run",[](const Request &req,Response &resp){
        std::string in_json = req.body;
        std::string out_json;
        if(in_json.size() != 0)
        {
            compile_and_run::CompileAndRun::Start(in_json,&out_json);
            resp.set_content(out_json,"application/json;charset=utf-8");
        }
    });
    svr.listen("0.0.0.0",atoi(argv[1]));
    // // httplib::Server svr;
    // // // 注册GET请求处理函数
    // // svr.Get("/hello", [](const httplib::Request& req, httplib::Response& resp) {
    // //     // 1. 修复Content-Type格式（添加空格）
    // //     // 2. 明确指定字符编码（避免中文乱码）
    // //     resp.set_content("hello httplib", "text/plain; charset=utf-8");
    // // });
    // // svr.listen("0.0.0.0", 8080);
    // return 0;


    // std::string in_json;
    // Json::Value in_value;
    // in_value["code"] = 
    // R"(
    // #include<iostream>
    // int main()
    // {
    //     std::cout << "你可以看⻅我了" << std::endl;
    //     return 0;
    // }
    // )";
    // in_value["input"] = "";
    // in_value["cpu_limit"] = 1;
    // in_value["mem_limit"] = 10240;
    // Json::FastWriter writer;
    // in_json = writer.write(in_value);
    // std::cout << in_json << std::endl;
    // std::string out_json;
    // compile_and_run::CompileAndRun::Start(in_json, &out_json);
    // std::cout << out_json << std::endl;
    // return 0;
}